
/*

? callback  函数可以接收三个参数 current element、index、array，其中 current element 必须提供，index 和 array 两个参数是可选的。此外，还可以传入一个可选的  thisArg  参数，用于指定  callback  函数中  this  的值。
? 1.  currentValue : 数组中正在处理的当前元素。
? 2.  index （可选）：正在处理的当前元素的索引。
? 3.  array （可选）：调用  forEach()  的数组本身。
? 此外，还可以传入一个可选的  thisArg  参数，用于指定  callback  函数中  this  的值。
? forEach()  不会修改原数组，若要修改原数组的元素，可以在回调函数中编写修改代码。此外， forEach()  方法无法被 break、continue 和 return 语句中断。
 */
Array.prototype.myForEach2 = function (callback, thisArg) {
    console.log(Object.prototype.toString.call(callback));
    if (!Object.prototype.toString.call(callback).includes('Function')) {
        throw new Error('不是函数')
    }
    else {
        for (let i = 0; i < this.length; i ++) {
            console.log(callback(this[i], i, this));
        }
    }
}
function add(current,index,array) {
    return current + ':' + index + ':' + array[index]
}
const arr = [1, [2, 3, [4, 5, [10, 12]]], 1, 2, [6, 7]]
console.log(arr.myForEach2(add))
